package main

import "fmt"

// 函数作为类型

// func()
func f1() {
	fmt.Println("hello go")
}

// func() int
func f2() int {
	return 1
}

// func(string)
func f3(x string) {
	fmt.Println("hello" + x)
}

// func(int) string
func f4(x int) string {
	return "hello"

}

// 函数也可以作为参数的类型
func f5(x func() int) {
	ret := x()
	fmt.Println(ret)

}

func f8(age int, name string) int {
	return 8
}

// 函数也可以作为返回值
func f6(x func(int, int) int) func(int, string) int {
	return f8
}

func main() {
	a := f3 // 函数赋值 不需要()
	b := f4
	fmt.Printf("a类型:%T\nb类型:%T\n", a, b)
}
